package com.sys.web.back.interceptor;

import java.io.IOException;
import java.util.Collections;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import com.sys.common.controller.BaseController;
import com.sys.common.pojo.ApiResponse;
import com.sys.common.pojo.ApiResponseEnum;
import com.sys.common.util.ConstatFinalUtil;
import com.sys.users.pojo.AAdmins;
import com.sys.users.service.IUsersDbService;

/**
 * 创建一个过滤器的步骤和Servlet一样 实现一个Filter接口
 * 
 * @author wangshMac
 */
@Component
public class AuthBackInterceptor implements HandlerInterceptor {
	/*
	 * 这两个对象,中的彼此引用 是null; 如果想赋值,必须调用set方法
	 */
	@Autowired
	private IUsersDbService usersDbService;

	/**
	 * 过滤器所做的事情=====Servlet中的Service
	 * 
	 * @throws IOException
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws IOException {
		ApiResponse<Object> apiResponse = new ApiResponse<Object>();
		/*
		 * 获取到Session session是httpServletRequest才有的方法
		 */
		HttpSession session = request.getSession();
		/*
		 * 取票 getAttribute之前,一定要确定setAttribute
		 */
		AAdmins admins = (AAdmins) session.getAttribute("admins");
		// RequestFacade rs = null ;
		/*
		 * 在该拦截的地方拦截了.(他发现了游客)
		 * 
		 * ~请出示一下你的票, 有票:sorry,知道了,玩的开心;放行 木有票:请到大门处,补票;提供一个友好的页面
		 * 
		 * ~在登陆提交操作,为用户发票(登陆成功)
		 */
		if (admins != null) {
			/* 放行--登陆成功 */
			return true;
		}
		apiResponse.setCode(ApiResponseEnum.INFO_LOGIN_ILLEGAL.getStatus());
		apiResponse.setInfo(ConstatFinalUtil.INFO_JSON.getString(apiResponse.getCode() + ""), Collections.EMPTY_MAP);
		/* 存储信息 */
		session.setAttribute("response", apiResponse.toJSON());
		response.sendRedirect(request.getContextPath() + "/adminsLogin");
		return false;
	}
}
